home *** CD-ROM | disk | FTP | other *** search
- 100 ' biorythm program for ATARI 520ST - by James H. Trageser
- 200 ' "Newtitle" downloaded from Compuserve ATARI16 SIG
- 300 ' On Color systems use Medium resolution
- 1000 gosub newtitle:' Change title of Output window
- 1010 Dim A$(10):x0=1:xfs=500:y0=50:yfs=100:ymax=1
- 1020 clrline$=" "
- 1030 poke systab+24,1:fullw 2:clearw 2:color 1,1,1,1:poke systab+24,0
- 1040 gotoxy 1,10:Print "ENTER BIRTH DATE MM,DD,YYYY ";
- 1050 Input M,D,Yr
- 1060 Gosub 1390
- 1070 Tbd=D3
- 1080 Bm=M:Bd=D:By=Yr
- 1090 gosub blankline
- 1100 gotoxy 1,10:Print "ENTER DATE YOU WANT TO SEE PLOT FOR--";
- 1110 Input M,D,Yr
- 1120 Gosub 1390
- 1130 Cm=M:Cd=D:Cy=Yr
- 1140 Days=D3-Tbd
- 1150 Gosub plotsine
- 1160 P=Days/23
- 1170 P=P-Int(Days/23)
- 1180 P=P*23
- 1190 Pp=P*(xfs/23)
- 1200 I=(Days/33)-Int(Days/33)
- 1210 I=I*33
- 1220 Ip=I*(xfs/33)
- 1230 E=(Days/28)-Int(Days/28)
- 1240 E=E*28
- 1250 Ep=E*(xfs/28)
- 1260 Gosub plotline
- 1270 gotoxy 1,6:? clrline$
- 1280 gotoxy 1,6
- 1290 Print "Birthdate: ";Bm;"/";Bd;"/";By;" Plot for: ";Cm;"/";Cd;"/";Cy
- 1300 gosub blankline
- 1310 gotoxy 1,10:Print "DO YOU WANT ANOTHER DAY ";
- 1320 Input A$
- 1330 gosub blankline
- 1340 If A$="Y" OR A$="y" Then 1700
- 1350 If A$="N" OR A$="n" Then 1790
- 1360 Goto 1310
- 1370 blankline:gotoxy 1,10:? clrline$
- 1380 return
- 1390 If Yr<100 Then Yr=Yr+1900:' Convert m/d/y to days
- 1400 If M<2 Then 1430
- 1410 D1=Int(365.25*Yr)
- 1420 D2=Int((M+1)*30.6):Goto 1450
- 1430 D1=Int(365.25*(Yr-1))
- 1440 D2=Int((M+13)*30.6)
- 1450 D3=D+D1+D2
- 1460 Return
- 1470 plotsine:' Plot sinewave on screen
- 1480 LINEF x0,y0,xfs,y0
- 1490 xold=x0:yold=y0
- 1500 For X=.050 to 3.1416*2 step .050
- 1510 y=(yfs/2)*sin(x):yp=y0+1-y:xp=x*((xfs+1)/6.2832)
- 1520 LINEF xold,yold,xp,yp:xold=xp:yold=yp
- 1530 Next X
- 1540 reset
- 1550 Return
- 1560 plotline:LINEF Pp,ymax,Pp,yfs:' Put E, I, and P lines on sinewave
- 1570 LINEF Ip,ymax,Ip,yfs
- 1580 LINEF Ep,ymax,Ep,yfs
- 1590 linef Pp+3,ymax+5,Pp+3,ymax+15
- 1600 linef Pp+4,ymax+5,pp+7,ymax+5
- 1610 linef Pp+8,ymax+6,Pp+8,ymax+6:linef Pp+9,ymax+7,pp+9,ymax+9
- 1620 linef Pp+8,ymax+10,Pp+8,ymax+10:linef Pp+7,ymax+11,Pp+3,ymax+11
- 1630 linef Ip+5,ymax+20,Ip+5,ymax+30
- 1640 linef Ip+3,ymax+20,Ip+7,ymax+20
- 1650 linef Ip+3,ymax+30,Ip+7,ymax+30
- 1660 linef Ep+3,ymax+35,Ep+3,ymax+45
- 1670 linef Ep+3,ymax+45,Ep+8,ymax+45:linef Ep+3,ymax+40,Ep+7,ymax+40
- 1680 linef Ep+3,ymax+35,Ep+8,ymax+35
- 1690 Return
- 1700 clearw 2
- 1710 openw 2
- 1720 gosub blankline
- 1730 gotoxy 1,10:Print "ENTER NEW DATE: ";
- 1740 Input M,D,Yr
- 1750 Gosub 1390
- 1760 Cm=M:Cd=D:Cy=Yr
- 1770 Days=D3-Tbd
- 1780 Goto 1160
- 1790 gosub blankline
- 1800 gotoxy 1,10:Print "DO YOU WANT TO START A NEW PLOT ";:Input A$
- 1810 If A$="Y" or A$="y" then 1840
- 1820 If A$="N" or A$="n" Then 1850
- 1830 Goto 1790
- 1840 Goto 1030
- 1850 stop
- 32000 newtitle: ' New title for OUTPUT window
- 32001 poke systab+24,1 : ' Don't need to see this...
- 32002 a# = gb : ' Fetch globals address
- 32003 gintin = peek(a#+8) : ' AES int_in array
- 32004 poke gintin+0,peek(systab+8) : ' OUTPUT window handle
- 32005 poke gintin+2,2 : ' we're changing it's name
- 32006 s# = gintin+4 : ' DBL address for long poke
- 32007 title$ = "Biorythym" + chr$(0) : ' assure zero terminator
- 32008 poke s#,varptr(title$) : ' title of new window
- 32009 gemsys(105) : ' wind_set AES call
- 32010 poke systab+24,0 : ' Turn things back on
- 32011 return
- əəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəəə